<?php

namespace app\data\command;

use app\admin\service\FeiShuService;
use app\data\service\CityUserRelationService;
use app\data\service\MessageParseService;
use app\data\service\StringParse;
use EasyFeiShuNice\Foundation\Application;
use think\admin\Command;
use think\admin\Exception;
use think\console\Input;
use think\console\Output;
use think\db\exception\DbException;
use think\facade\Log;

/**
 * test
 * Class Test
 * @package app\data\command
 */
class Test extends Command
{
    protected function configure()
    {
        $this->setName('test');
        $this->setDescription('test');
    }

    /**
     * Test
     * @param Input $input
     * @param Output $output
     * @return void
     * @throws Exception
     * @throws DbException
     */
    protected function execute(Input $input, Output $output)
    {
        $openId = 'ou_6d88bb03b6b5e3798323bebe0ed22e9b';
        $message = '销售战队：启航战队
销售报单人：伍文韬
司机姓名：王元军
司机车牌：鲁A95U6G
手机号码：18863568167
是否需要安装车载盒子：是
盒子安装类型：OBD/点烟器
车长车身颜色：4.2
车身是否有广告：无广告
预约城市：济南
预约区县：历城
预约喷漆时间：3.8 现在
备注：无';

        $result = FeiShuService::instance()->checkInRecords('1710000000', '1710057696', ['fb3bb128', 'f5bdg29g']);

        foreach ($this->app->db->name('data_record')
                     ->where('paint_status', 1)
                     ->where('platform_price', '0.00')
                     ->where('painter_price', '0.00')
                     ->cursor() as $vo) try {

            $vo = CityUserRelationService::instance()->calcPaintPrice([], $vo);
            $mobile = $this->app->db->name('data_record')->where('id', $vo['id'])->update([
                'platform_price' => $vo['platform_price'],
                'painter_price' => $vo['painter_price'],
            ]);
        }  catch (\Exception $exception) {
            Log::error('未回复消息通知30分钟-报错: ' . $exception->getMessage());
        }

        die;

        $manualEntryText = '司机车牌：粤A012342；
司机姓名：马测试；
手机号码：18812312322；
车长车身颜色：16白；
预约城市：昆明；
预约区县：五华区；
车身是否有广告： 无；
城市负责人：XX；
喷漆完成：是；
喷漆师傅：马师傅；
尾部喷漆：是；
广告覆盖是否收费：是；
覆盖几面：2；
覆盖收费：3000；
        ';

        $carParseText = '销售战队：测试
销售报单人：测试
司机姓名：马测肺
司机车牌：粤A012342
手机号码：18812312322
是否知道签署协议：是
车长车身颜色： 4.7          
车身是否有广告：否
预约城市：昆明
预约区县：五华区
预约喷漆时间：今天
备注：';

        $completeInfoText = '粤A012342；
喷漆完成:是；
尾部喷漆:是；
广告覆盖是否收费:是；
覆盖几面:4；
覆盖收费:2000；
喷漆师傅:马师傅；';

        $inviteInfo = '粤A012342;师傅没空';

        $specialText = '这个是不是呢，车牌应该是粤A012342';

        $testText = '销售战队：掘金战队        
销售报单人：过锡阳
司机姓名：马圣杉
司机车牌：苏B63AT0
手机号码：13382207326
是否知道签署协议：是
车长车身颜色：4.2白色厢货
车身是否有广告：无
预约城市：无锡
预约区县：梁溪区
预约喷漆时间：28号上午9点
备注：孙';

        $text = $completeInfoText;

        $isDone = false;

        $message = StringParse::instance()->manualEntry($text);

        // 手动录入(必须匹配到城市负责人才会手动录入)
        if (!empty($message['has_uuid_city']) && !empty($message['phone']) && !empty($message['plate_number'])) {

            if (isset($message['paint_status']) && $message['paint_status'] === '1') {
                if (!isset($message['car_vehicle_type_id'])) {
                    $message['car_vehicle_type_id'] = 0;
                }
                if (!isset($message['end_paint_status'])) {
                    $message['end_paint_status'] = -1;
                }
                $message = CityUserRelationService::instance()->calcPaintPrice([], $message);
            }

            MessageParseService::instance()->manualEntry($text, $message);
            $isDone = true;
            echo '手动录入';
        }

        // 信息采集(车牌不为空)
        if (!$isDone) {
            $message = StringParse::instance()->carParse($text);
            if (!empty($message['plate_number']) && !empty($message['phone'])) {
                MessageParseService::instance()->carParse($text, $message);
                $isDone = true;
                echo '信息采集';
            }
        }

        // 自动结单
        if (!$isDone) {
            $message = StringParse::instance()->completeInfo($text);
            if (!empty($message['plate_number']) && (
                    $message['paint_status'] !== -1 ||
                    $message['end_paint_status'] !== -1 ||
                    $message['ad_cover_fee'] !== -1 ||
                    $message['has_cover'] !== -1 ||
                    $message['is_deal'] !== -1 ||
                    $message['cover_num'] !== '' ||
                    $message['cover_price'] !== '' ||
                    $message['painter'] !== '' ||
                    $message['car_vehicle_type'] !== ''
                )) {
                MessageParseService::instance()->completeInfo($message);
                $isDone = true;
                echo '自动结单';
            }
        }

        // 保存邀约情况
        if (!$isDone) {
            MessageParseService::instance()->inviteInfo($text);
            echo '保存邀约情况';
        }

        var_dump($message);
    }
}